#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    create();
    connect(button,&QPushButton::clicked,this,&Widget::handler);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::create()
{
    date_time1=new QDateTimeEdit(this);
    date_time1->setGeometry(0,0,300,80);
    date_time2=new QDateTimeEdit(this);
    date_time2->setGeometry(0,100,300,80);

    button=new QPushButton(this);
    button->setText("确认");
    button->setGeometry(0,200,300,80);

    label=new QLabel(this);
    label->setGeometry(0,300,500,100);

}

void Widget::handler()
{
    //获取新旧时间
    QDateTime time_old=date_time1->dateTime();
    QDateTime time_new=date_time2->dateTime();
    qDebug()<<time_old;
    qDebug()<<time_new<<"\n";

    //计算时间差值-天数
    //老时间对象.daysTo(新时间)   计算两个日期时间天数差值
    //int days=time_old.daysTo(time_new);//这里的这个函数存在bug，参考文档
    //老时间对象.secsTo(新时间)   计算两个日期时间秒数差值
    int seconds=time_old.secsTo(time_new);
    int days=(seconds/3600)/24;//用这种方式计算不会出现上述bug
    //将秒数换算为小时(一天内的小时)
    int hours=(seconds/3600)%24;
    //将天数差值和小时差值放到label中展示
    //将int转为QString
    //QString::number(int)
    qDebug()<<QString("相差时间:")<<QString(QString::number(days))<<"天"<<QString(QString::number(hours))<<QString("小时");
    label->setText(QString("相差时间:")+QString(QString::number(days))+QString("天")+QString(QString::number(hours))+QString("小时"));
}

